<?php

/**
 * This is the model class for table "tbl_interesado".
 *
 * The followings are the available columns in table 'tbl_interesado':
 * @property integer $interesado_persona_tipodocumento_id
 * @property string $interesado_persona_numerodocumento
 * @property string $interesado_observacion
 * @property integer $interesado_mediopromocion_id
 * @property integer $interesado_coniciacup
 * @property string $interesado_creado
 * @property string $interesado_creado_usuario_id
 * @property string $interesado_modificado
 * @property string $interesado_modificado_usuario_id
 * @property integer $interesado_estado_id
 */
class Interesado extends MyCActiveRecord
{
	public $interesado_persona_apellido;
	public $interesado_persona_nombres;
	public $interesado_tipodocumento_abreviacion;
	
	/**
	 * Returns the static model of the specified AR class.
	 * @return Interesado the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}

	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'tbl_interesado';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('interesado_persona_tipodocumento_id, interesado_persona_numerodocumento, interesado_creado_usuario_id, interesado_estado_id', 'required'),
			array('interesado_persona_tipodocumento_id, interesado_conociacup, interesado_mediopromocion_id, interesado_estado_id', 'numerical', 'integerOnly'=>true),
			array('interesado_persona_numerodocumento', 'length', 'max'=>50),
			array('interesado_observacion', 'length', 'max'=>255),
			array('interesado_creado_usuario_id, interesado_modificado_usuario_id', 'length', 'max'=>20),
			array('interesado_creado, interesado_modificado', 'safe'),
			// The following rule is used by search().
			// Please remove those attributes that should not be searched.
			array('interesado_persona_nombres,interesado_persona_apellido,interesado_persona_tipodocumento_id, interesado_persona_numerodocumento, interesado_observacion, interesado_conociacup, interesado_mediopromocion_id, interesado_creado, interesado_creado_usuario_id, interesado_modificado, interesado_modificado_usuario_id, interesado_estado_id', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
						'medioPromocion' => array(self::BELONGS_TO, 'MedioPromocion', 'interesado_mediopromocion_id'),
						'persona' => array(
									self::BELONGS_TO, 
									'Persona',
									'interesado_persona_numerodocumento,interesado_persona_tipodocumento_id'),
						'contactos' => array(
									self::HAS_MANY, 
									'InteresadoContacto',
									'interesadocontacto_persona_tipodocumento_id,interesadocontacto_persona_numerodocumento'),
						'intereses' => array(
									self::HAS_MANY, 
									'InteresadoInteres',
									'interesadointeres_persona_tipodocumento_id,interesadointeres_persona_numerodocumento'),
						'visitas' => array(
									self::HAS_MANY, 
									'InteresadoVisita',
									'interesadovisita_persona_tipodocumento_id,interesadovisita_persona_numerodocumento'),
					'usuarioCreador' => array(self::BELONGS_TO, 'Usuario', 'interesado_creado_usuario_id'),
					'usuarioModificador' => array(self::BELONGS_TO, 'Usuario', 'interesado_modificado_usuario_id'),
          'tipoDocumento' => array(self::BELONGS_TO, 'TipoDocumento', 'interesado_persona_tipodocumento_id'), 
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'interesado_persona_tipodocumento_id' => t('Tipo Documento','persona_etiqueta'),
			'interesado_persona_numerodocumento' => t('Numero de Documento','persona_etiqueta'),
			'interesado_observacion' => t('Observacion','nucleo_etiqueta'),
			'interesado_institucionacademica_id' =>  t('Interesado Institucionacademica','persona_etiqueta'),
			'interesado_orientacioninstitucionacademica_id' =>  t('Interesado Orientacioninstitucionacademica','persona_etiqueta'),
			'interesado_conociacup' =>  t('Conocia CUP','persona_etiqueta'),
			'interesado_mediopromocion_id' =>  t('Medio de Promocion','marketing_etiqueta'),
			'interesado_creado' =>  t('Interesado Creado','persona_etiqueta'),
			'interesado_creado_usuario_id' =>  t('Interesado Creado Usuario','persona_etiqueta'),
			'interesado_modificado' =>  t('Interesado Modificado','persona_etiqueta'),
			'interesado_modificado_usuario_id' =>  t('Interesado Modificado Usuario','persona_etiqueta'),
			'interesado_estado_id' =>  t('Interesado Estado','persona_etiqueta'),
		
			'interesado_persona_apellido' => t('Apellido','persona_etiqueta'),
			'interesado_persona_nombres' => t('Nombres','persona_etiqueta'),
			'interesado_tipodocumento_abreviacion' => t('Tipo Documento','persona_etiqueta'),
		
		
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
	 */
	public function search()
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('interesado_persona_tipodocumento_id',$this->interesado_persona_tipodocumento_id);
		$criteria->compare('interesado_persona_numerodocumento',trim($this->interesado_persona_numerodocumento),true);
		$criteria->compare('interesado_observacion',$this->interesado_observacion,true);
		$criteria->compare('interesado_institucionacademica_id',$this->interesado_institucionacademica_id);
		$criteria->compare('interesado_orientacioninstitucionacademica_id',$this->interesado_orientacioninstitucionacademica_id);
		$criteria->compare('interesado_conociacup',$this->interesado_conociacup);
		$criteria->compare('interesado_mediopromocion_id',$this->interesado_mediopromocion_id);
		$criteria->compare('interesado_creado',$this->interesado_creado,true);
		$criteria->compare('interesado_creado_usuario_id',$this->interesado_creado_usuario_id,true);
		$criteria->compare('interesado_modificado',$this->interesado_modificado,true);
		$criteria->compare('interesado_modificado_usuario_id',$this->interesado_modificado_usuario_id,true);
		$criteria->compare('interesado_estado_id',$this->interesado_estado_id);
		
    $criteria->with = array('persona','tipoDocumento');
        
    $criteria->compare('persona.persona_apellido',$this->interesado_persona_apellido,true);
		$criteria->compare('persona.persona_nombres',$this->interesado_persona_nombres,true);
        
		$sort = array('attributes'=>array(
            								'interesado_persona_apellido'=>array(
                								'asc'=>'persona.persona_apellido',
                								'desc'=>'persona.persona_apellido DESC',
            								),
            								'interesado_persona_nombres'=>array(
                								'asc'=>'persona.persona_nombres',
                								'desc'=>'persona.persona_nombres DESC',
            								),
            								'*',
        								),
        			'defaultOrder'=>array('interesado_persona_apellido'=>false,'interesado_persona_nombres'=>false),
    	);
        
		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
      'sort'=>$sort,
		));
	}
	
	
	public function afterSave()
	{
		try
		{
			parent::afterSave();
			
			//borro los contactos anteriores
			$criteria = new CDbCriteria;
			$criteria->condition = 'interesadocontacto_persona_tipodocumento_id = :tipoDocumento';
			$criteria->condition .= ' and interesadocontacto_persona_numerodocumento = :numeroDocumento';
			$criteria->params = array(':tipoDocumento'=>$this->interesado_persona_tipodocumento_id, ':numeroDocumento'=>$this->interesado_persona_numerodocumento);
			InteresadoContacto::model()->deleteAll($criteria);
			
			if(is_array($this->contactos))
			{
				//guardo los nuevos contactos
				foreach ($this->contactos as $contacto)
				{
					$contacto->interesadocontacto_persona_tipodocumento_id = $this->interesado_persona_tipodocumento_id;
					$contacto->interesadocontacto_persona_numerodocumento = $this->interesado_persona_numerodocumento;
				
					if(!$contacto->save())
					{
						var_dump($contacto->getErrors());exit;
						$this->addErrors($contacto->getErrors());
						throw new Exception(t("Problema al cargar los contactos"));
					}
				}
			}
			
			
			//borro las intereses 
			$criteria = new CDbCriteria;
			$criteria->condition = 'interesadointeres_persona_tipodocumento_id = :tipoDocumento';//active
			$criteria->condition .= ' and interesadointeres_persona_numerodocumento = :numeroDocumento';//active
			$criteria->params = array(':tipoDocumento'=>$this->interesado_persona_tipodocumento_id, ':numeroDocumento'=>$this->interesado_persona_numerodocumento);
			InteresadoInteres::model()->deleteAll($criteria);
			
			if(is_array($this->intereses))
			{
				//guardo los nuevos intereses
				foreach ($this->intereses as $interes)
				{
					$interes->interesadointeres_persona_tipodocumento_id = $this->interesado_persona_tipodocumento_id;
					$interes->interesadointeres_persona_numerodocumento = $this->interesado_persona_numerodocumento;
				
					if(!$interes->save())
					{
						var_dump($interes->getErrors());
						$this->addErrors($interes->getErrors());
						throw new Exception(t("Problema al cargar los intereses"));
					}
				}
			}
			
			
			
			//borro las visitas anteriore
			$criteria = new CDbCriteria;
			$criteria->condition = 'interesadovisita_persona_tipodocumento_id = :tipoDocumento';//active
			$criteria->condition .= ' and interesadovisita_persona_numerodocumento = :numeroDocumento';//active
			$criteria->params = array(':tipoDocumento'=>$this->interesado_persona_tipodocumento_id, ':numeroDocumento'=>$this->interesado_persona_numerodocumento);
			InteresadoVisita::model()->deleteAll($criteria);
			
			//var_dump($this->visitas);exit;
			if(is_array($this->visitas))
			{
				//guardo los estudios
				foreach ($this->visitas as $visita)
				{
					//var_dump($visita->interesadovisita_fecha);exit;
					$visita->interesadovisita_persona_tipodocumento_id = $this->interesado_persona_tipodocumento_id;
					$visita->interesadovisita_persona_numerodocumento = $this->interesado_persona_numerodocumento;
				
					if(!$visita->save())
					{
						var_dump($visita->getErrors());
						$this->addErrors($visita->getErrors());
						throw new Exception(t("Problema al cargar las visitas"));
					}
				}
			}
		}
		catch(Exception $e)
		{
			var_dump($e);exit;
			throw new Exception(t("Problema"));
		}	
	}
	
	public function primaryKey()
	{
		return array('interesado_persona_tipodocumento_id','interesado_persona_numerodocumento');
		// For composite primary key, return an array like the following
		// return array('pk1', 'pk2');
	}
	
}